home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / lfs / lfs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-19  |  3.8 KB  |  104 lines

  1. /*
  2.  * lfs.h --
  3.  *
  4.  *    Declarations of data structures and routines of the LFS file system
  5.  *    exported to the rest of the Sprite file system. 
  6.  *
  7.  * Copyright 1989 Regents of the University of California
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/lfs/lfs.h,v 1.5 92/03/06 11:56:46 mgbaker Exp $ SPRITE (Berkeley)
  17.  */
  18.  
  19. #ifndef _LFS
  20. #define _LFS
  21.  
  22. #include <sprite.h>
  23. #include <fsdm.h>
  24.  
  25. /*
  26.  * Flags controlling file system.
  27.  * LFS_CONTROL_CLEANALL - When cleaning, clean all dirty segments.
  28.  */
  29. #define    LFS_CONTROL_CLEANALL    0x1
  30.  
  31. /*
  32.  * These flags are just for the ASPLOS measurements, to tag write operations
  33.  * if they are a result of an fsync.  They shouldn't be flags in controlFlags,
  34.  * but it won't interfere with anything there, and this way I don't have
  35.  * to change the size of the Lfs structure.
  36.  *
  37.  * Can be removed after ASPLOS measurements.
  38.  *             Mary    2/14/92
  39.  */
  40. #define    LFS_FILE_FSYNCED    0x2
  41. #define    LFS_FSYNC_IN_PROGRESS    0x4
  42.  
  43. /* Descriptor management routines. */
  44.  
  45. extern ReturnStatus Lfs_GetNewFileNumber _ARGS_((Fsdm_Domain *domainPtr, 
  46.         int dirFileNum, int *fileNumberPtr));
  47. extern ReturnStatus Lfs_FreeFileNumber _ARGS_((Fsdm_Domain *domainPtr, 
  48.         int fileNumber));
  49. extern ReturnStatus Lfs_FileDescStore _ARGS_((register Fsdm_Domain *domainPtr,
  50.         Fsio_FileIOHandle *handlePtr, int fileNumber, 
  51.         Fsdm_FileDescriptor *fileDescPtr, Boolean forceOut));
  52. extern ReturnStatus Lfs_FileDescFetch _ARGS_((Fsdm_Domain *domainPtr, 
  53.         int fileNumber, Fsdm_FileDescriptor *fileDescPtr));
  54. extern ReturnStatus Lfs_FileDescInit _ARGS_((Fsdm_Domain *domainPtr, 
  55.         int fileNumber, int type, int permissions, int uid, int gid,
  56.         Fsdm_FileDescriptor *fileDescPtr));
  57. /*
  58.  * Startup and shutdown routines. 
  59.  */
  60. extern ReturnStatus Lfs_AttachDisk _ARGS_((Fs_Device *devicePtr, 
  61.             char *localName, int flags, int *domainNumPtr));
  62. extern ReturnStatus Lfs_DetachDisk _ARGS_((Fsdm_Domain *domainPtr));
  63. extern ReturnStatus Lfs_DomainWriteBack _ARGS_((Fsdm_Domain *domainPtr, 
  64.             Boolean shutdown));
  65. extern ReturnStatus Lfs_RereadSummaryInfo _ARGS_((Fsdm_Domain *domainPtr));
  66. extern ReturnStatus Lfs_DomainInfo _ARGS_((Fsdm_Domain *domainPtr, 
  67.             Fs_DomainInfo *domainInfoPtr));
  68. /*
  69.  * File I/O and allocate routines. 
  70.  */
  71. extern ReturnStatus Lfs_FileBlockRead _ARGS_((Fsdm_Domain *domainPtr, 
  72.             register Fsio_FileIOHandle *handlePtr, 
  73.             Fscache_Block *blockPtr));
  74. extern ReturnStatus Lfs_FileBlockWrite _ARGS_((Fsdm_Domain *domainPtr, 
  75.             Fsio_FileIOHandle *handlePtr, Fscache_Block *blockPtr));
  76. extern ReturnStatus Lfs_BlockAllocate _ARGS_((Fsdm_Domain *domainPtr, 
  77.             register Fsio_FileIOHandle *handlePtr, int offset, 
  78.             int numBytes, int flags, int *blockAddrPtr, 
  79.             Boolean *newBlockPtr));
  80. extern ReturnStatus Lfs_FileTrunc _ARGS_((Fsdm_Domain *domainPtr, 
  81.             Fsio_FileIOHandle *handlePtr, 
  82.             int size, Boolean delete));
  83.  
  84. /*
  85.  * Directory routines.
  86.  */
  87. extern ClientData Lfs_DirOpStart _ARGS_((Fsdm_Domain *domainPtr, int opFlags, 
  88.             char *name, int nameLen, int fileNumber, 
  89.             Fsdm_FileDescriptor *fileDescPtr, int dirFileNumber, 
  90.             int dirOffset, Fsdm_FileDescriptor *dirFileDescPtr));
  91. extern void Lfs_DirOpEnd _ARGS_((Fsdm_Domain *domainPtr, ClientData clientData,
  92.             ReturnStatus status, int opFlags, char *name, 
  93.             int nameLen, int fileNumber, 
  94.             Fsdm_FileDescriptor *fileDescPtr, int dirFileNumber, 
  95.             int dirOffset, Fsdm_FileDescriptor *dirFileDescPtr));
  96.  
  97.  
  98. extern void Lfs_Init _ARGS_((void));
  99. extern ReturnStatus Lfs_Command _ARGS_((int command, int bufSize, 
  100.                        Address buffer));
  101.  
  102. #endif /* _LFS */
  103.  
  104.